package com.juzi.string;

/**
    目标：String类创建字符串对象的两种方式
 */

public class StringDemo2 {
    public static void main(String[] args) {
        //方法一：直接使用双引号 得到字符串对象
        String name = "我爱你 中国";
        System.out.println(name);

        //方法二：
        //1、public String（）创建一个空白字符串对象，不含有任何内容（几乎不用）
        String s1 = new String();
        System.out.println(s1);

        //2、public String（String）：根据传入的字符串内容，来创建字符串对象（几乎不用）
        String s2 = new String("我是中国人");
        System.out.println(s2);

        //3、public String（char[] c）：根据字符数组的内容，来创建字符串对象
        char[] chars = {'a' ,'b' ,'中' ,'国'};
        String s3 = new String(chars);
        System.out.println(s3);

        //4、public String（byte[] b）：根据字节数组的内容，来创建字符串对象
        byte[] bytes = {97, 98, 99, 65, 66, 67, 127, -128};
        String s4 = new String(bytes);
        System.out.println(s4);

        System.out.println("----------------");
        String ss1 = "abc";
        String ss2 = "abc";
        System.out.println(ss1 == ss2);//地址相同，ss1创建时，有地址，ss2创建时已经有了“abc”，则直接指向ss1的地址

        System.out.println("----------------");
        char[] chars1 = {'a','b','c'};//数组本身有个地址
        String ss3 = new String(chars1);//分配地址给上ss3
        String ss4 = new String(chars1);//分配地址给ss4
        System.out.println(ss3 == ss4);//此时地址不相同
    }
}
